iT邦幫忙

2022 iThome 鐵人賽

DAY 2
2
Software Development

Moleculer 家家酒系列 第 2

Day 2 : Moleculer 微服務框架

  • 分享至 

  • xImage
  •  

Moleculer 微服務框架

Moleculer 介紹

Moleculer 官方網站
https://moleculer.services/

Moleculer 是一個快速、現代化且多功能的 Node.js 微服務框架,它提供許多建構與管理服務的功能,用於建立高效、可靠及可擴展的微服務。筆者撰寫此系列時的版本是 0.14 版,目前仍然是個更新頻繁的 Node.js 微服務框架。

Moleculer 的官方手冊有多個語系版本,雖然有簡體中文版本,但只有少部分頁面完成翻譯,因此筆者將以英文版本為主要參考對象來進行撰寫,希望本系列文可以讓大家在選擇微服務框架時能夠多一個選項。

Moleculer 特色

參考官方功能說明

  • 以 Promise 為基底 (相容 async/await 語法糖)
  • 事件驅動的平衡架構
  • 內建註冊服務及動態探尋服務
  • 透過查詢事件狀態進行負載平衡 (循環式、隨機、系統使用率、延遲度、分片)
  • 豐富的容錯率機制 (中斷、隔離、重試、超時、錯誤、退回)
  • 套件、中間件系統
  • 支援版本控制服務
  • 支援串流檔案
  • Mixins 服務
  • 內建暫存器 (記憶體、MemoryLRU, Redis)
  • 可替換日誌工具 (Console, File, Pino, Bunyan, Winston, Debug, Datadog, Log4js)
  • 可替換訊息傳輸器 (Transporter) (TCP, NATS, MQTT, Redis, NATS Streaming, Kafka, AMQP 0.9, AMQP 1.0)
  • 可替換序列化器 (JSON, Avro, MsgPack, Protocol Buffer, Thrift)
  • 可替換參數驗證器
  • 單節點多服務
  • 扁平化架構,所有節點都一致
  • 使用 fastest-validator 參數驗證器
  • 內建標準報表功能 (Console, CSV, Datadog, Event, Prometheus, StatsD)
  • 內建追蹤輸出功能
  • 官方 API 閘道器、資料庫查詢等眾多的模組

Moleculer 有多快

以下是官方對於使用 Node.js 為基礎的微服務框架比較,可以看到在本地環境中, Moleculer 會使用記憶體的方式快速請求,如圖所示:


Fig. 1. 本地速度比較圖

而在遠端環境下,也有不錯的速度結果,如圖所示:


Fig. 2. 遠端速度比較圖

其中 Cote 雖然在遠端環境的速度最快,但可惜目前已有一年未做更新,而 Moleculer 目前則維持活躍的更新頻率。

專有名詞對照

在微服務中的專有名詞有些較為抽象難以翻譯,這類名詞筆者不會硬翻成中文,但常見的名詞仍會盡量翻成中文,這裡參考 Miles 大大的方式放上一個對照表[2]。

英文 中文
Instance 實例
Request 請求
Response 響應
Console 主控台
Schema 綱目
Handler 處理程序
Validator 驗證器
Cache 快取
Decorate 裝飾
Debug 除錯
Threshold 門檻值
Timeout 逾時
Mixin 混合
Async 異步
Alias 別名
Populate 填充

參考文獻

[1] Moleculer 官方手冊, https://moleculer.services/docs/0.14/
[2] Laravel 原始碼分析, https://ithelp.ithome.com.tw/articles/10202137

家家酒小劇場

  • Otter - 微服務的功能那麼多,看得我都眼花撩亂了@@
  • Boxy - 微服務比起單體式系統還要更複雜,除了要讓每個微服務能夠互相溝通,還得讓節點間能夠愉快的分工合作,所以才需要那麼多功能來撐起整個系統唷。
  • Otter - 哎呀,我的小腦袋要當機了,先去睡搞搞惹。

上一篇
Day 1 : 微服務是什麼?
下一篇
Day 3 : Hello Moleculer
系列文
Moleculer 家家酒31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
json_liang
iT邦研究生 5 級 ‧ 2022-09-02 10:12:51

感謝大大分享 Moleculer 微服務框架,讓身為 nodejs 開發者的我學習到了在這個語言使用微服務好用工具。

0
json_liang
iT邦研究生 5 級 ‧ 2022-09-02 10:12:55

感謝大大分享 Moleculer 微服務框架,讓身為 nodejs 開發者的我學習到了在這個語言使用微服務好用工具。

我要留言

立即登入留言